{{tag>Dapper Edgy serveur vétuste Precise}}

----

====== Apache Tomcat ======

**Apache Tomcat** est un  conteneur de servlet [[wpfr>Java 2 Enterprise Edition|J2EE]]. Issu du projet [[wpfr>Apache Jakarta|Jakarta]], Tomcat est désormais un projet principal de la [[wpfr>Apache Software Foundation|fondation Apache]]. Tomcat implémente les spécifications des servlets et des [[wpfr>JavaServer Pages|JSP]] de [[wpfr>Sun Microsystems]]. Il inclut des outils pour la configuration et la gestion, mais peut également être configuré en éditant des fichiers de configuration XML. Comme Tomcat inclut un serveur HTTP interne, il est aussi considéré comme un [[wpfr>serveur HTTP]].


<note important>Cette page nécessite un ménage. Il faudrait nettoyer toute mention des versions d'Ubuntu désuètes, spécifier que pour 8.04 (Hardy) c'est tomcat5.5, et pour les versions suivantes c'est tomcat6 ; vérifier les pré-requis en fonction des versions. </note>

===== Installation tasksel (Ubuntu 12.04) =====

==== Installation ====

Installation d'un serveur tomcat6 pour Ubuntu 12.10 grâce à [[tasksel|Tasksel]] :

<code>sudo tasksel install tomcat-server</code>

//It works !// doit apparaître sur la page

[[http://localhost:8080/]]

==== Configuration ====

Changer éventuellement la version de java utilisée en [[:tutoriel:comment_modifier_un_fichier|modifiant le fichier]] **/etc/default/tomcat7**. Changer ou ajouter la variable **JAVA_HOME** en fonction de votre configuration :
<file>JAVA_HOME=/usr/lib/jvm/java-6-sun
JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64</file>

Pour ensuite pouvoir se connecter aux consoles d'administration, il faut ajouter un utilisateur. [[:tutoriel:comment_modifier_un_fichier|Ajouter fichier]] **/etc/tomcat7/tomcat-users.xml** juste avant **</tomcat-users>** :

<file><user username="<utilisateur>" password="<mot_de_passe>" roles="admin,manager"/></file>

<note>Remplacer <utilisateur> et <mot_de_passe> respectivement par le nom d'utilisateur et le mot de passe que vous souhaitez utiliser</note>

Enfin, changer les droits sur le dossier de tomcat7 :

<code>sudo chgrp -R tomcat7 /etc/tomcat7
sudo chmod -R g+w /etc/tomcat7</code>

Une fois la configuration terminée, relancer le service tomcat7 :

  sudo service tomcat7 restart
==== Utilisation ====

Vous pouvez désormais accéder aux panneaux de configurations :

[[http://localhost:8080/manager/html]]

[[http://localhost:8080/host-manager/html]]

**Source :** [[https://help.ubuntu.com/12.04/serverguide/tomcat.html|Apache Tomcat sur la documentation officielle de Ubuntul]]

===== Installation par les paquets =====

La version 5.0.x de Tomcat est disponible dans le dépôt //universe// sous Ubuntu 6.06 LTS (Dapper) et Ubuntu 6.10 (Edgy). La version 5.5.x est également disponible dans ce même dépôt sous Ubuntu 6.10. Cette section présente l'installation de la version 5, la procédure est sensiblement la même pour la version 5.5, seul les noms des paquets changent.

<note warning>
<del>Note attention cette article ne semble plus valable sous Hardy:</del>

* Présence d'un paquet tomcat 5.5

Marche parfaitement sous reserve de changer les noms de version dans les commande et d'utiliser Java 6 dans mon cas.
</note>

==== Pré-requis ====

  * Disposer des [[:sudo|droits d'administration]].
  * [[:java|Java SDK]] 1.4 ou supérieur (paquet << sun-java5-jdk >> recommandé).
  * Accès aux [[:depots#universe_et_multiverse|dépôts APT]] //universe//.
==== Installation ====

Pour les nouvelle version d'ubuntu utiliser **tomcat6** [[apt://tomcat6,tomcat6-admin,tomcat6-examples|tomcat6, tomcat6-admin et tomcat6-examples]]

[[:tutoriel:comment_installer_un_paquet|Installez les paquets]] [[apt://tomcat5.5,tomcat5.5-admin,tomcat5.5-webapps|tomcat5.5, tomcat5.5-admin et tomcat5.5-webapps]] du //[[:depots#universe_et_multiverse|dépôt universe]]//. À l'installation du paquet, Tomcat est automatiquement démarré et, normalement, fonctionnel. Vous pouvez vérifier en visitant http://localhost:8080/.

Il se peut que Tomcat soit accessible sur un autre port. Si l'adresse ci-dessus ne fonctionne pas, essayez http://localhost:8180/.

Il est possible qu'à l'installation du paquet, Tomcat ne soit pas correctement configuré pour utiliser une JDK installée ou que vous souhaitiez le voir utiliser un autre que celui par défaut. Dans ce cas, [[:tutoriel:comment_editer_un_fichier|éditez le fichier]] « /etc/default/tomcat5.5 » et trouvez la ligne avec l'option « JAVA_HOME ». Décommentez-la et indiquer le chemin de la JDK que vous souhaitez utiliser. Dans le cas du JDK installé //via// le paquet « sun-java5-jdk », utilisez « /usr/lib/jvm/java-1.5.0-sun », et la ligne suivante :

  JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

Ensuite, exécutez la commande suivante :

  export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

Redémarrez ensuite Tomcat avec la commande :

  sudo /etc/init.d/tomcat5.5 restart

Vous devriez normalement avoir les messages suivants :

  Stopping Tomcat 5 servlet engine: ..tomcat5.
  Starting Tomcat 5 servlet engine using Java from /usr/lib/jvm/java-1.5.0-sun: tomcat5.

Le premier indique l'arrêt de l'instance déjà démarrée. Si, à l'installation du paquet, une JDK n'avait pas été trouvé par la procédure automatique, un message d'erreur apparaitrait à la place. Le second message indique le démarrage d'une nouvelle instance et indique la JDK utilisé (ici « /usr/lib/jvm/java-1.5.0-sun »), ce qui permet de vérifier la prise en compte du fichier de configuration « /etc/default/tomcat5 ».

=== Le cas Feisty Fawn (7.04) ===


Il semble y avoir un bug avec tomcat5.5 sous Feisty : http://forum.ubuntu-fr.org/viewtopic.php?id=113447

Ajoutez :

  sudo tail -n0 -f /var/log/tomcat5.5/catalina.out

puis relancer Tomcat.
Pour rendre cela permanent, [[:tutoriel:comment_editer_un_fichier|éditez]] « /etc/default/tomcat5.5 », le fichier de démarrage de Tomcat.
Insérer la ligne suivant juste avant le premier ''else'' :
<file>
tail /var/log/tomcat5.5/catalina.out > /dev/null &
</file>
Sauvegarder et relancer Tomcat5.5.


==== Utilisation et configuration ====

=== Arrêt et démarrage ===

Tomcat peut être démarré et arrêté comme un « dæmon » standard //via// le script « /etc/init.d/tomcat5 » avec les options « start », « stop » et « restart » pour la démarrer, l'arrêter ou le redémarrer. L'option « status » permet de savoir s'il est déjà lancé.

À l'installation, le système est configuré pour démarrer Tomcat au démarrage de l'ordinateur. Si vous souhaitez changer ce comportement, vous pouvez le faire //via// la commande « update-rc.d » :

  sudo update-rc.d tomcat5 remove

Si Tomcat n'est pas démarré avec la machine et que vous souhaitez que ce soit le cas, utilisez :

  sudo update-rc.d tomcat5 defaults

=== Interfaces d'administration ===

Les paquets « tomcat5-admin » et « tomcat6-admin » installent deux interfaces Web d'administration. Elle sont disponibles aux adresses http://localhost:8080/admin/ et http://localhost:8080/manager/html mais nécessitent la configuration manuelle d'un utilisateur administrateur.

Cette configuration se fait en ajoutant un (ou plusieurs) utilisateur(s) et deux rôles dans le fichier « /var/lib/tomcat5.5/conf/tomcat-users.xml » ou « /var/lib/tomcat6/conf/tomcat-users.xml » :
<code>
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <!-- Utilisateurs administrateur de tomcat -->
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="NOM_D_UTILISATEUR" password="MOT_DE_PASSE" roles="admin,manager"/>
  <!-- On peut ajouter d'autre rôles, utilisateurs ou groupes pour les
       applications web déployées sur le serveur -->
</tomcat-users>
</code>
Puis relancer Tomcat pour tester ces comptes : 
<code> /etc/init.d/tomcat6 restart</code>

=== Notes concernant la configuration ===
  * Les fichiers « web.xml » et « server.xml » se trouvent dans « /etc/tomcat5/ ».
  * Le paramètre « ''-security'' » est activé par défaut. Les permissions liée à la sécurité Java sont dans des fichiers sous « /etc/tomcat5/policy.d ».
  * Le reste des fichiers se trouvent dans « /var/lib/tomcat5.5 ».
  * Les //webapps// déposées dans « /var/lib/tomcat5.5/webapps » (fichiers WAR ou répertoire en respectant la structure) sont automatiquement et dynamiquement déployées.

{{:icons:icone_danger.png  |Attention}}
> Le paramètre « ''TOMCAT_SECURITY=yes'' » empêche certaines applications de fonctionner (scripts d'installation de CMS, par exemple). Il faut se rendre dans « /etc/init.d/tomcat5.5 » et passer le paramètre à « no » (« ''TOMCAT_SECURITY=no'' »).

Par ailleurs, la version 5.5 disponible actuellement sur les dépôts a un bug qui  empêche les « jsp-examples » de fonctionner. Ce bug ne touche **que** ces exemples et n'est pas le signe d'un problème global de configuration. Pour le corriger, il faut [[:tutoriel:comment_editer_un_fichier|éditer le fichier]]
« /var/lib/tomcat5.5/webapps/jsp-examples/WEB-INF/tagPlugins.xml »
et remplacer les « jstl. » par « jstl.core. ».

===== Installation manuelle =====

Traduction par [[http://forum.ubuntu-fr.org/profile.php?id=7021|Angelo]] d'un [[http://www.ubuntuforums.org/showthread.php?p=226828#post226828|post]] de Noodle, sur le forum Ubuntu anglais.

{{:icons:iconnote.png  |Note}}
> Cette installation n'est pas prévue pour un usage développement. Pour une installation développement, merci de vous reporter au post de [[http://www.ubuntuforums.org/showthread.php?p=226828|Noodle]].

Versions des logiciels utilisés :
  * SDK : 1.5
  * JRE : 1.5
  * Tomcat : 5.5

==== Installation de JRE et SDK ====

Java est disponible en paquet. [[:tutoriel:comment_installer_un_paquet|Installez donc les paquets suivants]] (attention les dépots //multiverses// doivent être sélectionnés) :
  * sun-java5-bin
  * sun-java5-fonts
  * sun-java5-jdk
  * sun-java5-jre

{{:icons:iconnote.png  |Note}}
> SDK demande 146 Mo et JRE 84,7 Mo sur votre disque dur.

Il faut ensuite s'assurer que le Java de votre système est bien celui installé, et pas GCJ (alternative Open Source). Pour cela utilisez la commande :

  sudo update-java-alternatives -l

Cela devrait renvoyer un résultat du type :

  java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun

Pour activer la bonne version, il suffit d'appeler la même commande, avec des paramètres différents :

  sudo update-java-alternatives -s java-1.5.0-sun

Pour vérifier que les deux paquetages sont correctement installés, vérifier que vous obtenez une réponse lorsque vous tapez ceci dans un terminal :

  java -version
  javac -help


==== Téléchargement de Tomcat ====

Télécharger Tomcat 5.5 depuis [[http://tomcat.apache.org]] (la version Binary Distributions/Core). Dans cet exemple, nous utilisons « jakarta-tomcat-5.5.9.tar.gz ». Puis décompresser l'archive :

  tar xvfz jakarta-tomcat-5.5.9.tar.gz

{{:icons:iconnote.png  |Note}}
> Pour simplifier les choses, j'ai également renommé le package en « tomcat ». Si vous ne le faites pas, assurez-vous de rectifier ce tutoriel  avec le nom de votre package lorsque vous voyez « tomcat ».

==== Installation de Tomcat ====

Placer l'archive décompressée dans « /usr/local/ ».
==== Les variables d'environnement JAVA_HOME et CLASSPATH ====

Vous devez créer un lien avec l'emplacement où vous avez installé Java SDK. Pour cela vous devrez [[:tutoriel:comment_editer_un_fichier|éditer le fichier]] « ~/.bashrc »(pour une prise en compte pour l'utilisateur courant et dans "/etc/bash.bashrc" pour tous les utilisateurs) , aussi sauvegardez-le avant !

Ajoutez-y les lignes suivantes :
<file>
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
export CLASSPATH=/usr/local/tomcat/common/lib/jsp-api.jar:/usr/local/tomcat/common/lib/servlet-api.jar
</file>

{{:icons:iconnote.png  |Note}}
> Pensez à changer le mot « tomcat » vers le nom du package placé dans « /usr/local/ ».

Enregistrer et fermer. Vous devez maintenant clôturer votre session et la réouvrir avant que les changements ne prennent effet.

==== Démarrage de Tomcat ====

Tomcat doit maintenant être opérationnel. Pour le lancer, taper dans un terminal :

  sh /usr/local/tomcat/bin/startup.sh

Si tout fonctionne correctement, vous devez voir les messages suivants :

  Using CATALINA_BASE:   /usr/local/tomcat
  Using CATALINA_HOME:   /usr/local/tomcat
  Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  Using JRE_HOME:        /usr/lib/j2sdk1.5-sun/

Dans votre navigateur, tapez [[http://localhost/]] et vérifier que votre serveur fonctionne. Si vous n'avez pas changé le numéro de port de Tomcat, pointez vers [[http://localhost:8080/]]. Vous devez normalement vous trouvez sur la page d'accueil de Tomcat !

Pour arrêter Tomcat, taper dans un terminal :

  sh /usr/local/tomcat/bin/shutdown.sh

Voilà, c'est fini !

==== Installation des interfaces « admin » et « manager » de Tomcat ====

L'interface de management est déjà présente dans le paquet « core » de Tomcat, mais aucun utilisateur n'est défini pour y accéder. Nous allons voir comment définir cet utilisateur et comment installer l'interface d'administration par la même occasion.

Il faut récupérer l'archive correspondant à l'interface d'administration sur http://tomcat.apache.org/ puis la décompresser avec la commande : 

  tar xvfz apache-tomcat-5.x.x-admin.tar.gz

Une fois décompressé on obtient le dossier « apache-tomcat-5.x » qui contient les dossiers « conf » et « server ».

Il faut copier leur contenu dans l'arborescence de Tomcat :

  cd apache-tomcat-5.x/
  mv ./conf/Catalina/localhost/admin.xml /usr/local/tomcat/conf/Catalina/localhost/
  mv ./server/webapps/admin /usr/local/tomcat/server/webapps/

Ensuite, il faut configurer les utilisateurs ayant droit d'accéder à cette interface. Ça se trouve dans le fichier « /usr/local/tomcat/conf/tomcat-users.xml ».

Rajouter une ligne entre les deux balises « ''<tomcat-users>'' » du style :
<file>
		<tomcat-users>
			...
			...
			<user username="admin" password="mon_mot_de_passe" roles="admin,manager"/>
		</tomcat-users>
</file>
Redémarrer tomcat :

  sh /usr/local/tomcat/bin/shutdown.sh
  sh /usr/local/tomcat/bin/startup.sh

Ceci permet d'accéder à l'interface d'administration et de management de Tomcat //via// ces URL (http://localhost:8080/admin et http://localhost:8080/manager).

Les mots de passe sont ceux définis dans le fichier « tomcat-users.xml ».

===== Notes =====
==== Tomcat et Eclipse ====

Pour utiliser Tomcat avec Eclipse (dans le cas de projet commun Windows et Linux), vous devez rajouter une variable dans les perspectives d'Eclipse.

  - allez dans le menu //Windows → Preferences//.
  - élément //Java → Build path → Classpath Variables// de l'arbre de gauche.
  - cliquez sur //New//.
  - comme ''NAME'', introduisez ''TOMCAT_HOME''.
  - comme ''Path'', introduisez ''/usr/local/tomcat''. (ou ''/usr/share/tomcat6'' le cas échéant)
  - cliquez sur //OK//.

=== Tomcat6 ===
La structure des fichiers de tomcat 6 lorsqu'il est installé par les paquets pose quelques problèmes lors d'un déploiement via Eclipse. Pour résoudre ce problème voici quelques liens à créer :
<file>
  cd /usr/share/tomcat6
  sudo ln -s /var/lib/tomcat6/conf conf
  sudo ln -s /etc/tomcat6/policy.d/03catalina.policy conf/catalina.policy
  sudo ln -s /var/log/tomcat6 log
  sudo chmod -R 777 /usr/share/tomcat6/conf
  sudo mkdir temp 
</file>

[[http://stackoverflow.com/questions/447289/problem-creating-a-tomcat-6-server-in-eclipse-form-ubuntu|source]] 

=== Accéder à Tomcat6 par le port 80 ===
Pour pouvoir se connecter à Tomcat à partir du port 80 :
<file>
/sbin/iptables -t nat -A PREROUTING -j REDIRECT -p tcp --destination-port 80 --to-ports 8080
</file>


==== Tomcat couplé avec Apache 2 et SSL ====

[[tutoriel:comment_coupler_apache_et_tomcat_avec_support_ssl|Comment coupler Apache2 avec un serveur d'application Tomcat (avec support SSL) ?]]
===== Liens & références =====

  * [[http://tomcat.apache.org/|Site officiel d'Apache Tomcat]]
  * [[http://tomcat.apache.org/tomcat-5.5-doc/index.html|Documentation officielle de Tomcat 5.5.x]]
  * Introduction : article encyclopédique « [[wpfr>Tomcat (serveur)]] » sur Wikipedia
  * Un [[http://www.progenvrac.com/spip.php?article1|tutoriel]] pour l'installation de Tomcat 6.*.*
  * [[:jetty|Jetty]], un autre conteneur de servlets

----

// Contributeurs : [[utilisateurs:ostaquet]], [[utilisateurs:strzel_a]] [[utilisateurs:jahbromo]], Brzhk, [[utilisateurs:clement.analogue]]//